package com.luofan.service.impl;

import cn.hutool.core.util.IdUtil;
import com.luofan.common.result.CustomException;
import com.luofan.common.result.ResultCodeEnum;
import com.luofan.common.util.MinioUtil;
import com.luofan.service.FileService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

@Service
public class FileServiceImpl implements FileService {

    @Autowired
    private MinioUtil minioUtil;

    //获取文件的扩展名（后缀） 如 .jpg
    private static String getFileExtension(MultipartFile file) {
        // 获取文件的原始文件名
        String originalFilename = file.getOriginalFilename();

        if (originalFilename != null && originalFilename.contains(".")) {
            // 获取文件的扩展名（后缀）
            return originalFilename.substring(originalFilename.lastIndexOf("."));
        }
        // 如果没有扩展名，返回空字符串
        return "";
    }

    //上传文件
    @Override
    public String upload(MultipartFile file) {
        //生成文件名
        String filename = IdUtil.simpleUUID() + getFileExtension(file);

        //上传图片到minio
        Boolean uploadSuccess = minioUtil.upload(file, filename);
        //上传失败抛出异常
        if (!uploadSuccess) throw new CustomException(ResultCodeEnum.FILE_UPLOAD_ERROR);

        return filename;
    }
}
